﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TrainBankCardChecker.BankCardCheckServices
{
    /// <summary>
    /// 银行卡信息校验接口（中国银联接口实现）
    /// </summary>
    internal class ChinaUnionPay_BankCardChecker : IBankCardChecker
    {
        #region 辅助方法

        /// <summary>
        /// 读取配置信息（AppId、AppPwd）
        /// </summary>
        private void GetConfig()
        {
            // 加载配置
        }

        #endregion

        #region Ctor

        public ChinaUnionPay_BankCardChecker()
        {
            GetConfig();
        } 

        #endregion


        public BankCardCheckResult Check(string accountNo, string accountName)
        {
            throw new NotImplementedException();
        }

        public BankCardCheckResult Check(string accountNo, string accountName, string idCardNo, string idCardType)
        {
            throw new NotImplementedException();
        }

        public BankCardCheckResult Check(string accountNo, string accountName, string idCardNo, string idCardType, string phone)
        {
            throw new NotImplementedException();
        }

        #region Request Params

        /// <summary>
        /// 校验请求参数
        /// </summary>
        public class CheckRequestParam
        {
            /// <summary>
            /// 商户id（填写分配商户id值）
            /// </summary>
            public string appId { get; set; }
            /// <summary>
            /// 商户密码（商户密码MD5值）
            /// </summary>
            public string appPwd { get; set; }

            /// <summary>
            /// 数据信息
            /// </summary>
            public CheckDataParam data { get; set; }
        }

        /// <summary>
        /// 基础校验参数
        /// </summary>
        public class CheckBaseParam
        {
            /// <summary>
            /// 卡号
            /// </summary>
            public string cardNo { get; set; }
            /// <summary>
            /// 姓名
            /// </summary>
            public string customerNm { get; set; }
            /// <summary>
            /// 手机号
            /// </summary>
            public string phoneNo { get; set; }
            /// <summary>
            /// 证件号
            /// </summary>
            public string certifId { get; set; }
            /// <summary>
            /// 证件类型
            /// </summary>
            public string certifTp { get; set; }
            /// <summary>
            /// 银行卡CVN2
            /// </summary>
            public string CVN2 { get; set; }
            /// <summary>
            /// 银行卡有效期
            /// </summary>
            public string expired { get; set; }
        }

        /// <summary>
        /// 校验数据参数
        /// </summary>
        public class CheckDataParam : CheckBaseParam
        {
            /// <summary>
            /// 查询类型（0201：两要素（卡号+姓名）;0202：两要素（卡号+身份证号）;0301：三要素(卡号+姓名+身份证号 );0401：四要素（卡号+姓名+身份证号+手机号）;0601：六要素（卡号+姓名+身份证号码+手机号+CVN2+expired））
            /// </summary>
            public string tradeType { get; set; }

            /// <summary>
            /// 订单号（yyyyMMddHHmmss+四位随机数）
            /// </summary>
            public string orderId { get; set; }

            /// <summary>
            /// 交易场景编码（交易场景字典：01 直销银行； 02 消费金融； 03 银行二三类账户开户； 04 征信； 05 保险； 06 基金； 07 证券； 08 租赁； 09 海关申报； 99 其他）
            /// </summary>
            public string transCode { get; set; }
        }

        #endregion

        #region Response Params

        /// <summary>
        /// 出参：校验结果
        /// </summary>
        public class CheckResultParam
        {
            /// <summary>
            /// 应答码（取值：00-查询信息一致；01-查询信用息不一致；99-验证失败）
            /// </summary>
            public string responseCode { get; set; }
            /// <summary>
            /// 应答消息（返回消息详情）
            /// </summary>
            public string message { get; set; }
            /// <summary>
            /// 应答报文
            /// </summary>
            public object data { get; set; }
        }

        #endregion
    }
}
